/**
 * Copyright &copy; 2013-2015 山东易科德软件有限公司 All rights reserved.
 */
package cn.net.ecode.modules.sys.service;

import java.util.List;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import cn.net.ecode.api.entity.DictInfo;
import cn.net.ecode.common.service.TreeService;
import cn.net.ecode.modules.sys.dao.DictDao;
import cn.net.ecode.modules.sys.entity.Dict;
import cn.net.ecode.modules.sys.utils.DictUtils;

/**
 * 字典Service
 * @author ThinkGem
 * @version 2014-8-19
 */
@Service
@Transactional(readOnly = true)
public class DictService extends TreeService<DictDao, Dict> {

	/**
	 * 获取字典
	 */
	public Dict get(String dictCode) {
		return super.get(dictCode);
	}
	
	/**
	 * 查询字典列表
	 */
	public List<Dict> findList(Dict dict) {
		return super.findList(dict);
	}

	/**
	 * 查询字段类型列表
	 * @return
	 */
	public List<String> findTypeList(){
		return dao.findTypeList(new Dict());
	}
	
	/**
	 * 保存字典数据
	 */
	@Transactional(readOnly = false)
	public void save(Dict dict) {
		super.save(dict);
		DictUtils.clearDictCache();
	}
	
	/**
	 * 更新子节点前（回调方法）设置子节点分类与是否系统同父类
	 */
	@Override
	protected void preUpdateChild(Dict entity, Dict childEntity) {
		super.preUpdateChild(entity, childEntity);
		childEntity.setType(entity.getType());
		childEntity.setIsSys(entity.getIsSys());
	}
	
	/**
	 * 删除字典
	 */
	@Transactional(readOnly = false)
	public void delete(Dict dict) {
		super.delete(dict);
		DictUtils.clearDictCache();
	}

	/**
	 * 禁用字典
	 * @param dict
	 */
	@Transactional(readOnly = false)
	public void disable(Dict dict) {
		dict.preUpdate();
		dao.disable(dict);
		DictUtils.clearDictCache();
	}

	/**
	 * 启用字典
	 * @param dict
	 */
	@Transactional(readOnly = false)
	public void enable(Dict dict) {
		dict.preUpdate();
		dao.enable(dict);
		DictUtils.clearDictCache();
	}
	
	/**
	 * 手机端接口使用
	 * @param
	 * @return
	 */
	public List<DictInfo> findDictList(String type) {
		return dao.findDictList(type);
	}
	
}
